package com.exam.controller;

import com.exam.entity.*;
import com.exam.serviceimpl.LoginServiceImpl;
import com.exam.util.ApiResultHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * 登录控制器，负责处理用户（管理员、教师、学生）登录相关的HTTP请求
 */
@RestController
public class LoginController {

    /**
     * 注入登录服务实现类
     */
    @Autowired
    private LoginServiceImpl loginService;

    /**
     * 用户登录接口，根据用户名和密码判断用户身份（管理员、教师、学生）
     * @param login 登录对象，包含用户名和密码
     * @return 登录结果，成功返回用户信息，失败返回错误信息
     */
    @PostMapping("/login")
    public ApiResult login(@RequestBody Login login) {
        Integer username = login.getUsername();
        String password = login.getPassword();
        // 管理员登录
        Admin adminRes = loginService.adminLogin(username, password);
        if (adminRes != null) {
            return ApiResultHandler.buildApiResult(200, "请求成功", adminRes);
        }
        // 教师登录
        Teacher teacherRes = loginService.teacherLogin(username,password);
        if (teacherRes != null) {
            return ApiResultHandler.buildApiResult(200, "请求成功", teacherRes);
        }
        // 学生登录
        Student studentRes = loginService.studentLogin(username,password);
        if (studentRes != null) {
            return ApiResultHandler.buildApiResult(200, "请求成功", studentRes);
        }
        // 登录失败
        return ApiResultHandler.buildApiResult(400, "请求失败", null);
    }
}
